PostgreSQL pg_wait_sampling
1 背景知识
pg_wait_sampling 扩展用于收集等待事件的统计信息。
由于 pg_wait_sampling 插件需要使用共享内存,所以在 postgresql.conf 中进行配置 shared_preload_libraries 参数并重启数据库。
pg_wait_sampling 扩展收集两种统计信息。
-
第一种收集统计信息是等待事件,它记录在 pg_wait_sampling_history 视图 中。
- 目前统计信息使用环形缓冲区的算法实现。
- 每个等待事件都会周期性的写入缓冲区,缓冲区写入到 pg_wait_sampling_history 视图
- 对于每一个进程都可以看到对应的等待。
-
第二种收集的是等待时间的上下文信息,它记录在 pg_wait_sampling_profile 视图中。
- 目前使用哈希表算法进行实现。
- 此视图记录每个进程的等待时间、(以及 pg_stat_statements 记录的每次查询文本)。
通过 pg_stat_statements 扩展相结合,pg_wait_sampling 还可以提供每个查询的统计数据。
pg_wait_sampling 会启动特殊的后台工作程序收集上述统计数据。并提供以下视图函数方便查询使用。
- pg_wait_sampling_current 视图
- pg_wait_sampling_history 视图
- pg_wait_sampling_profile 视图
- pg_wait_sampling_reset_profile() 函数
- pg_wait_sampling_get_current() 函数
2 pg_wait_sampling 实战
pg_wait_sampling 安装与配置
pg_wait_sampling 参数
pg_wait_sampling TPCC性能测试
3 参考链接
postgrespro/pg_wait_sampling: Sampling based statistics of wait events (github.com)